package com.atguigu.srb.sms.service.impl;

import com.atguigu.srb.common.util.RandomUtils;
import com.atguigu.srb.sms.service.SmsService;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@Service
@Slf4j
public class SmsServiceImpl implements SmsService {
    @Resource
    private RedisTemplate redisTemplate;

    @Override
    public void send(String mobile) {
//        //创建远程连接客户端对象
//        DefaultProfile profile = DefaultProfile.getProfile(
//                SmsProperties.REGION_Id,
//                SmsProperties.KEY_ID,
//                SmsProperties.KEY_SECRET);
//        IAcsClient client = new DefaultAcsClient(profile);

//        //创建远程连接的请求参数
//        CommonRequest request = new CommonRequest();
//        request.setSysMethod(MethodType.POST);
//        request.setSysDomain("dysmsapi.aliyuncs.com");
//        request.setSysVersion("2017-05-25");
//        request.setSysAction("SendSms");
//        request.putQueryParameter("RegionId", SmsProperties.REGION_Id);
//        request.putQueryParameter("PhoneNumbers", mobile);
//        request.putQueryParameter("SignName", SmsProperties.SIGN_NAME);
//        request.putQueryParameter("TemplateCode", templateCode);




        String code = RandomUtils.getSixBitRandom();
        HashMap<String, Object> param = new HashMap<>();
        param.put("code",code);
        redisTemplate.opsForValue().set("srb:sms:code:"+mobile,code,5, TimeUnit.MINUTES);

        System.out.println(code);

        Gson gson = new Gson();
        String json = gson.toJson(param);
        System.out.println("json = " + json);
//        request.putQueryParameter("TemplateParam", json);

//        try {
//            //使用客户端对象携带请求对象发送请求并得到响应结果
//            CommonResponse response = client.getCommonResponse(request);
//            boolean success = response.getHttpResponse().isSuccess();
//            //ALIYUN_RESPONSE_FAIL(-501, "阿里云响应失败"),
//            Assert.isTrue(success, ResponseEnum.ALIYUN_RESPONSE_FAIL);
//
//            String data = response.getData();
//            HashMap<String, String> resultMap = gson.fromJson(data, HashMap.class);
//            String code = resultMap.get("Code");
//            String message = resultMap.get("Message");
//            log.info("阿里云短信发送响应结果：");
//            log.info("code：" + code);
//            log.info("message：" + message);
//
//            //ALIYUN_SMS_LIMIT_CONTROL_ERROR(-502, "短信发送过于频繁"),//业务限流
//            Assert.notEquals("isv.BUSINESS_LIMIT_CONTROL", code, ResponseEnum.ALIYUN_SMS_LIMIT_CONTROL_ERROR);
//            //ALIYUN_SMS_ERROR(-503, "短信发送失败"),//其他失败
//            Assert.equals("OK", code, ResponseEnum.ALIYUN_SMS_ERROR);
//
//        } catch (ServerException e) {
//            log.error("阿里云短信发送SDK调用失败：");
//            log.error("ErrorCode=" + e.getErrCode());
//            log.error("ErrorMessage=" + e.getErrMsg());
//            throw new BusinessException(ResponseEnum.ALIYUN_SMS_ERROR , e);
//        } catch (ClientException e) {
//            log.error("阿里云短信发送SDK调用失败：");
//            log.error("ErrorCode=" + e.getErrCode());
//            log.error("ErrorMessage=" + e.getErrMsg());
//            throw new BusinessException(ResponseEnum.ALIYUN_SMS_ERROR , e);
//        }

    }

    @Override
    public void sendMsg(String mobile, String templateCode, Map<String, Object> param) {
        log.info((String) param.get("message"));
    }
}
